﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyHocPhi.Model;
using QuanLyHocPhi.BLL;

namespace QuanLyHocPhi.GUI
{
    public partial class FormLop_Details : Form
    {
        private bool m_IsAdding;
        private bool IsAdding
        {
            get { return m_IsAdding; }
            set
            {
                m_IsAdding = value;
                if (m_IsAdding)
                {
                    this.ActiveControl = txtTenLop;
                    this.Text = "Bổ sung lớp";
                }
                else
                {
                    this.ActiveControl = txtTenLop;
                    this.Text = "Chỉnh sửa lớp";
                }
            }
        }

        private LopGoc m_Lop;

        public FormLop_Details(bool isAdding, LopGoc pLop)
        {
            InitializeComponent();
            var lstLoaiHinh = BizLoaiHinhDaoTao.GetListLoaiHinhDaoTao();
            cbxLoaiHinhDaoTao.DisplayMember = "TenLoaiHinh";
            cbxLoaiHinhDaoTao.ValueMember = "MaLoaiHinh";
            cbxLoaiHinhDaoTao.DataSource = lstLoaiHinh;
            this.IsAdding = isAdding;
            this.m_Lop = pLop;
            DisplayData();
        }

        public FormLop_Details(bool isAdding, LopGoc pLop, bool chuyen)
        {
            InitializeComponent();
            this.IsAdding = isAdding;
            this.m_Lop = pLop;
            DisplayData();
        }

        private void DisplayData()
        {
            txtTenLop.Text = m_Lop.TenLopGoc;
            cbxLoaiHinhDaoTao.SelectedValue = m_Lop.MaLoaiHinhDaoTao;
            txtNamTuyenSinh.Text = m_Lop.NamTuyenSinh.ToString();
        }

        private void OnOKClick(object sender, EventArgs e)
        {
            #region Thu thập dữ liệu
            epMain.Clear();
            string tenLop = txtTenLop.Text.Trim();
            if (tenLop.IsNullOrEmpty())
            {
                epMain.SetError(txtTenLop, "Tên lớp không hợp lệ!");
                txtTenLop.Focus();
                return;
            }
            string namTuyenSinh = txtNamTuyenSinh.Text.Trim();
            string maLoaiHinh = "";
            if (cbxLoaiHinhDaoTao.SelectedValue != null)
                maLoaiHinh = cbxLoaiHinhDaoTao.SelectedValue.ToString();
            if (maLoaiHinh.IsNullOrEmpty())
            {
                epMain.SetError(cbxLoaiHinhDaoTao, "Phải chọn loại hình đào tạo");
                return;
            }
            #endregion

            #region Thực hiện lệnh cập nhật
            LopGoc lop = new LopGoc
            {
                MaLopGoc = m_Lop.MaLopGoc,
                TenLopGoc  = tenLop,
                NamTuyenSinh = namTuyenSinh.ToString(),
                MaLoaiHinhDaoTao = maLoaiHinh,
            };
            try
            {
                if (IsAdding)
                    BizLopGoc.AddLopGoc(lop);
                else
                    BizLopGoc.UpdateLopGoc(lop);

                m_Lop.MaLopGoc = lop.MaLopGoc;
                m_Lop.TenLopGoc = lop.TenLopGoc;
                m_Lop.NamTuyenSinh = lop.NamTuyenSinh;
                m_Lop.MaLoaiHinhDaoTao = lop.MaLoaiHinhDaoTao;
                this.DialogResult = System.Windows.Forms.DialogResult.OK;
                this.Close();
            }
            catch (Exception exc)
            {
                DialogUtils.ShowError(exc.Message);
            }
            #endregion
        }

        private void OnTenLopKeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                e.Handled = true;
            }
        }

        private void OnNamTuyenSinhKeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                e.Handled = true;
                btnOK.PerformClick();
            }
        }
    }
}
